package com.ruoyi.site.mapper;

import java.util.List;
import com.ruoyi.site.domain.CartItems;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 购物车项目Mapper接口
 *
 * @author chuckeytang
 * @date 2025-10-13
 */
@Mapper
public interface CartItemsMapper
{
    /**
     * 查询购物车项目
     *
     * @param cartItemId 购物车项目主键
     * @return 购物车项目
     */
    public CartItems selectCartItemsByCartItemId(Long cartItemId);

    /**
     * 根据购物车ID和产品信息查询购物车项目 (用于判断是否已存在)
     *
     * @param cartId 购物车ID
     * @param productType 产品类型
     * @param productId 产品ID
     * @param licenseOption 授权选项
     * @return 购物车项目
     */
    public CartItems selectCartItemByProduct(@Param("cartId") Long cartId, @Param("productType") String productType, @Param("productId") Long productId, @Param("licenseOption") String licenseOption);

    /**
     * 查询购物车项目列表
     *
     * @param cartItems 购物车项目
     * @return 购物车项目集合
     */
    public List<CartItems> selectCartItemsList(CartItems cartItems);

    /**
     * 根据购物车ID查询购物车项目列表
     *
     * @param cartId 购物车ID
     * @return 购物车项目集合
     */
    public List<CartItems> selectCartItemsListByCartId(Long cartId);

    /**
     * 新增购物车项目
     *
     * @param cartItems 购物车项目
     * @return 结果
     */
    public int insertCartItems(CartItems cartItems);

    /**
     * 修改购物车项目
     *
     * @param cartItems 购物车项目
     * @return 结果
     */
    public int updateCartItems(CartItems cartItems);

    /**
     * 删除购物车项目
     *
     * @param cartItemId 购物车项目主键
     * @return 结果
     */
    public int deleteCartItemsByCartItemId(Long cartItemId);

    /**
     * 批量删除购物车项目
     *
     * @param cartItemIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCartItemsByCartItemIds(Long[] cartItemIds);

    /**
     * 根据购物车ID批量删除购物车项目（清空购物车）
     * @param cartId 购物车ID
     * @return 删除的记录数
     */
    public int deleteCartItemsByCartId(Long cartId);
}